System and method for cross-cloud identity matching

ABSTRACT

A system and method for cross-cloud identity matching are provided. The method includes receiving at least one user identifier of a user of a client node; determining at least one cloud-based resource accessed by the client node; selecting a cloud-based resource of the at least one accessed cloud-based resource; extracting at least one possible user identity of the user from the selected cloud-based resource; identifying at least one user identifier of the extracted at least one possible user identity; matching between each identified user identifier and the at least one received user identifier; determining whether each possible user identity is associated with the user respective of the matching; and upon determining that at least one possible user identity is associated with the user, storing each associated user identity respective of the client node.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional Application No. 61/889,100 filed on Oct. 10, 2013, the contents of which are hereby incorporated by reference.

TECHNICAL FIELD

The present invention relates generally to identifying cloud sources accessed by a user device over the web, and more particularly to systems and methods for providing content from cloud sources accessed by a user device.

BACKGROUND

As a growing number of organizations are adopting cloud-based solutions provided by different vendors, it is becomingly increasingly common for an enterprise's information technology (IT) landscape to be an environment composed of multiple cloud ecosystems. Each cloud-based solution carries its own technological stack, which exposes a solution-dependent user experience and a specific set of tools that help IT administrators control and manage the use of these cloud services.

By their nature, cloud-based systems are run in an isolated environment, requiring implementation of corresponding user management tools for each system. These tools are not typically shared between cloud-based systems. As a result, silos develop, thereby requiring users to maintain multiple identities for multiple cloud services. Since user identity management is proprietary to each of these systems, different sets of profile attributes and information are exposed while a user interacts with the systems' respective application program interfaces.

Users may wish to be able to efficiently switch between their identities. In particular, when a user is originally using one cloud-based system and wishes to temporarily switch to using another cloud-based system, the user may wish to access the tools of the temporary cloud-based system while remaining able to access the tools of the original cloud-based system. Further, it may be desirable to access information regarding a user from multiple cloud-based resources simultaneously. For example, when viewing a profile of a sales person, a user may wish to view both the sales person's latest sales activity (streamed from, e.g., Salesforce®) as well as the most recent document provided by the sales person (streamed from, e.g., Office 365). Since these cloud systems do not share a common user identity, it is difficult to match identities across cloud platforms.

It would therefore be advantageous to provide a solution that would overcome the deficiencies of the prior art by identifying the user identities through a plurality of cloud-based systems.

SUMMARY

A summary of several example embodiments of the disclosure follows. This summary is provided for the convenience of the reader to provide a basic understanding of such embodiments and does not wholly define the breadth of the disclosure. This summary is not an extensive overview of all contemplated embodiments, and is intended to neither identify key or critical elements of all embodiments nor delineate the scope of any or all embodiments. Its sole purpose is to present some concepts of one or more embodiments in a simplified form as a prelude to the more detailed description that is presented later. For convenience, the term some embodiments may be used herein to refer to a single embodiment or multiple embodiments of the disclosure.

The disclosure relates in various embodiments to a method for cross-cloud identity matching. The method comprises receiving at least one user identifier of a user of a client node; determining at least one cloud-based resource accessed by the client node; selecting a cloud-based resource of the at least one accessed cloud-based resource; extracting at least one possible user identity of the user from the selected cloud-based resource; identifying at least one user identifier of the extracted at least one possible user identity; matching between each identified user identifier and the at least one received user identifier; determining whether each possible user identity is associated with the user respective of the matching; and upon determining that at least one possible user identity is associated with the user, storing each associated user identity respective of the client node.

The disclosure relates in various embodiments to a system for cross-cloud identity matching. The system includes a processing system; and a memory communicatively connected to the processing system, the memory containing instructions that, when executed by the processing system, configure the system to: receive at least one user identifier of a user of a client node; determine at least one cloud-based resource accessed by the client node; select a cloud-based resource of the at least one accessed cloud-based resource; extract at least one possible user identity of the user from the selected cloud-based resource; identify at least one user identifier of the extracted at least one possible user identity; match between each identified user identifier and the at least one received user identifier; determine whether each possible user identity is associated with the user respective of the matching; and upon determining that at least one possible user identity is associated with the user, store each associated user identity respective of the client node.

BRIEF DESCRIPTION OF THE DRAWINGS

The subject matter disclosed herein is particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The foregoing and other objects, features, and advantages of the disclosed embodiments will be apparent from the following detailed description taken in conjunction with the accompanying drawings.

FIG. 1 is a schematic block diagram of a system for cross-cloud identity matching according to an embodiment;

FIG. 2 is a flowchart illustrating cross-cloud identity matching according to an embodiment; and

FIG. 3 is a flowchart illustrating determining whether a possible user identity is associated with a user according to an embodiment.

DETAILED DESCRIPTION

It is important to note that the embodiments disclosed herein are only examples of the many advantageous uses of the innovative teachings herein. In general, statements made in the specification of the present application do not necessarily limit any of the various claimed embodiments. Moreover, some statements may apply to some inventive features but not to others. In general, unless otherwise indicated, singular elements may be in plural and vice versa with no loss of generality. In the drawings, like numerals refer to like parts through several views.

The various disclosed embodiments include a method and system for cross-cloud identity matching. A user identity is identified through a plurality of cloud-based resources. In an exemplary embodiment, parameters related to a user are received. Then, a plurality of cloud-based resources is analyzed and one or more possible user identities are extracted from each cloud-based resource of the plurality of cloud-based resources. As a result of matching between the extracted user identities and the received parameters related to the user, the user identity may be determined through each of the plurality of cloud-based resources. In an embodiment, respective of the identification of a user's identities, content related to the user's identities is extracted and displayed.

FIG. 1 shows an exemplary and non-limiting schematic block diagram of a network system 100 utilized to describe the various disclosed embodiments. A plurality of client nodes 110-1 through 110-N (hereinafter referred to collectively as client nodes 110 and individually as a client node 110, merely for simplicity purposes) are communicatively connected to a network 120. Each of the client nodes 110-1 through 110-N may be, but is not limited to, a personal computer, a tablet computer, a laptop computer, a wearable computing device, a smart phone, and so on. The network 120 may be, but is not limited to, a wireless network, a cellular network, a wired network, a local area network (LAN), a wide area network (WAN), a metro area network (MAN), the Internet, the worldwide web (WWW), and a combination thereof.

The network system 100 further comprises agents 130-1 through 130-N (hereinafter referred to collectively as agents 130 or individually as an agent 130, merely for simplicity purposes) respectively installed in the client nodes 110-1 through 110-N. Each of the agents 130 may be implemented as an application program having instructions that may reside in a memory of its respective client node. Each agent 130 is further communicatively connected to a server 140 over the network 120.

According to one embodiment, each agent 130 is configured to monitor a plurality of cloud-based resources 150-1 through 150-M (hereinafter referred to collectively as cloud-based resources 150 or individually as a cloud-based resource 150, merely for simplicity purposes) accessed by or through the respective client node 110. The cloud-based resources 150 may include, but are not limited to, social networks, enterprise networks, chat applications, and so on, which the client node 110 communicates with. Each agent 130 is further configured to collect user identifiers related to the user of its respective client node 110.

The user identifiers may be personal or professional parameters related to the user. Personal parameters may be, but are not limited to, a user's name (first, middle, and/or last), age, gender, hobbies, hometown, personal contacts, and so on. Professional parameters may be, but are not limited to, the user's profession, the type of work the user typically performs, a title of the user, a department within a company, free text (e.g., an “AboutMe” text that explains the user's experience), skills, professional contacts a phone number, the location of the user's place of work, and so on. The user identifiers may further include profile pictures associated with a user identity of a cloud-based resource.

The identifiers collected by each agent 130 are sent to the server 140. The server 140 is configured to identify, based on the identifiers, one or more cloud-based resources of the cloud-based resources 150 which the user accessed through the client node as well as the user identity respective of each cloud-based resource 150. Respective of each user identity, the server 140 is further configured to collect or receive the data viewed by the user through each cloud-based resource 150.

It should be noted that, in certain cloud-based resources of the cloud-based resources 150, email addresses or unique identifiers may be used to determine search queries for determination of user identities. When unique identifiers are used to determine search queries, the server 140 is configured to tokenize and partition the user identifiers, and uses one or more of the partitioned and/or tokenized identifiers as search queries. For example, when a user's full name is identified, the full name may be partitioned into portions such as, e.g., a first name and a surname. Each portion of the full name may be joined with other identifiers such as, but not limited to, the user's profession. The joined identifiers may then be used as a search query.

As a non-limiting example, when one cloud-based resource of the cloud-based resources 150 is Google+®, a user's Gmail® email address may be used as a search query. As another non-limiting example, if the cloud-based resource is Salesforce®, the email addresses related to the users' profiles are not exposed. Thus, in this example, a full name and profession of the user may be used to determine a search query. If the user's full name is John Smith and his profession is identified as a lawyer, the queries “smith” and “lawyer” may be jointly used as a search query. The search results provided in response to this query may be ranked in order of degree of matching based on other identifiers included within the search results and the use identifiers.

According to another embodiment, profile photos related to a user's profile on a cloud-based resource 150 may further be used by the server 140 to determine a user's identity. In this embodiment, image processing, image tagging, and/or face detection techniques may be performed on profile photos related to possible users' identities in order to determine a match. As a non-limiting example, a user may have a photo associated with his Google+® account. This photo may be analyzed and compared to photos of users on other cloud-based resources 150 to identify appearance of that user in photos associated with other cloud-based resources. The server 140 configured some of the disclosed embodiments include a processing system (not shown) that is coupled to a memory (not shown), and optionally a network interface (not shown). The processing system is connected to the memory, which typically contains instructions that can be executed by the processing system. The processing system of the server 140 may comprise or be a component of a larger processing system implemented with one or more processors. The one or more processors may be implemented with any combination of general-purpose microprocessors, microcontrollers, digital signal processors (DSPs), field programmable gate array (FPGAs), programmable logic devices (PLDs), controllers, state machines, gated logic, discrete hardware components, dedicated hardware finite state machines, or any other suitable entities that can perform calculations or other manipulations of information.

FIG. 2 depicts an exemplary and non-limiting flowchart 200 illustrating cross-cloud identity matching according to one embodiment. In S210, at least one user identifier is received from an agent installed on a client node (e.g., the client node 110-1). In S220, at least one cloud-based resource (e.g., cloud-based resource 150-1) is selected. The selection may be based on a determination that a user has accessed a particular cloud-based resource. This determination may occur if, e.g., content identified through a client node indicates that a user accessed a particular cloud-based resource. For example, if content identified through a client node indicates that the user has accessed Microsoft Inc., Microsoft Enterprise's network is selected.

In S230, the selected cloud-based resources are analyzed and at least one possible user identity is extracted from the selected cloud-based resources. In S240, it is checked if at least one of the at least one possible user identity has been determined to be a user identity associated with the user and, if so, execution continues with S250; otherwise, execution continues with S260. A user identity that is associated with a user may be, but is not limited to, a user identity that the user has previously accessed via the client node or another device. Determining whether a possible user identity is a user identity associated with the user is described further herein below with respect to FIG. 3.

In S250, the at least one possible user identity that is associated with the user is identified as a user identity of the user and stored in a data warehouse. In S260, it is checked if additional possible user identities have been identified and, if so, execution continues with S240; otherwise, execution terminates.

As a non-limiting example, a full name of the user is received from an agent installed on a client node. In this example, the received full name is “John Smith.” Based on content contained in the client node, it is determined that the user has accessed Google+®. As a result, the cloud-based resource owned by Google® is selected. The Google® cloud-based resource is analyzed and a plurality of user identities are identified. In this example, the identified user identities are Google+® accounts owned by a variety of users.

User identifiers extracted from the identified user identities are matched to the full name “John Smith.” Based on this matching, it is determined that a Google+® account with the name “John Smith” is associated with the user. This Google+® account is stored in a database for subsequent use by the user.

FIG. 3 is an exemplary and non-limiting flowchart S240 illustrating determining whether a possible user identity is a user identity associated with a user according to one embodiment. In S310, a possible user identity is received or retrieved. In S320, at least one user identifier associated with the possible user identity is determined. The user identifiers may be personal or professional parameters related to the user, or an email address associated with the user. Personal parameters may be, but are not limited to, a user's name, age, gender, hobbies, hometown, and so on. Professional parameters may be, but are not limited to, the user's profession, the type of work the user typically performs, the location of the user's place of work, and so on. In an embodiment, the at least one user identifier may include profile photos related to the user identity may be determined in addition to or in place of the user identifiers.

In S330, at least one user identifier is received from the user. In an embodiment, the at least one received user identifier may be received from an agent installed on a client device operated by the user. In another embodiment, the at least one user identifier may further include profile photos related to the user identity. In S340, matching is performed between the at least one user identifier associated with the possible user identity and the at least one user identifier received from the user.

In S350, respective of the matching between user identifiers, it is determined if the possible user identity is associated with the user. In an embodiment, the determination is based on a predetermined verification threshold. In that embodiment, the possible user identity is determined to be associated with the user when the user identifiers demonstrate matching above the verification threshold. A verification threshold may be, for example, a number of user identifiers associated with the possible user identity that are identical or substantially similar to user identifiers received from the user. Substantially similar user identifiers may be, for example, user identifiers that demonstrate matching above a predefined matching threshold. In an embodiment, the verification threshold may be a degree of matching between user identifiers. In various embodiments, possible user identities may be ranked such that possible user identities with user identifiers that far exceed the verification threshold are ranked higher than possible user identities that just barely exceed the verification threshold.

Typically, when one of the user identifiers is a full name, the verification threshold will require that at least two user identifiers be identical or substantially similar to determine an association between the possible user identity and the user. This requirement is often used because many users may share full names. As an example, many users may share the relatively common name “John Smith.” Thus, full name may not provide clear identification of a single user's identities.

In an embodiment, determining a degree of matching may involve identifying the intersection between two user identifiers. In that embodiment, degrees of matching are typically found to be higher when the user identifiers share special terms as well as common terms rather than just common terms. A special term may be, e.g., a company name, a particular field of technology or business, a job title, and so on. A common term may be any term that tends to be common among profiles such as, but not limited to, “the,” “officer,” “research,” a particular state name (e.g., New York, California, etc.), and so on.

In a further embodiment, if the number of user identities that are possible user identities associated with the user is above a predefined identity threshold, the verification threshold may be raised. As a non-limiting example, if the verification threshold is at least 3 user identifiers that are identical or substantially similar, and the number of identified potential user identities associated with user identifiers that are identical or substantially similar is above 1000 users, the verification threshold may be raised to at least 4 user identifiers that are identical or substantially similar.

In an embodiment, a degree of matching between profile photos that is above a predetermined matching threshold may yield a determination that the profile photos are substantially similar. As a non-limiting example, if the profile photos demonstrate matching above the photo matching threshold and no other user identifiers match, the number of user identifiers that are identical and/or substantially similar is determined to be 1.

In another embodiment, determining if the possible user identity is associated with the user may further include prompting the user for confirmation that the possible user identity is a user identity of the user. In that embodiment, if the user does not confirm that the possible user identity is associated with the user, another possible user identity that passes the verification threshold may be provided to the user. In a further embodiment, the other possible user identity that is provided may be the next highest ranked user identity.

As a non-limiting example, a possible user identity is received. Respective thereto, a user identifier associated with the possible user identity is identified. In this example, the identified user identifier is a profile photo of the user. A profile photo is also received from the user. Matching is performed between the received profile photo and the identified profile photo using image recognition techniques. It is determined that the degree of matching between the profile photos determined by the image recognition techniques is above a predefined verification threshold and, as a result, it is determined that the possible user identity is associated with the user.

As another non-limiting example, a possible user identity is received. Respective thereto, user identifiers associated with the possible user identity are identified. In this example, the identified user identifiers are a full name and a profession of the user. Additionally, the verification threshold is at least 2 user identifiers in common. The full name is “Peter Parker” and the profession is “journalist.” A full name and a profession of the user are received from the user. The full names and professions are identical. Thus, it is determined that the received user identity meets the predefined verification threshold because at least two user identifiers were in common and, as a result, it is determined that the possible user identity is associated with the user.

In an embodiment, the processes described with reference to FIGS. 2 and 3 may be performed by the server 140.

The various embodiments disclosed herein can be implemented as hardware, firmware, software, or any combination thereof. Moreover, the software is preferably implemented as an application program tangibly embodied on a program storage unit or computer readable medium consisting of parts, or of certain devices and/or a combination of devices. The application program may be uploaded to, and executed by, a machine comprising any suitable architecture. Preferably, the machine is implemented on a computer platform having hardware such as one or more central processing units (“CPUs”), a memory, and input/output interfaces. The computer platform may also include an operating system and microinstruction code. The various processes and functions described herein may be either part of the microinstruction code or part of the application program, or any combination thereof, which may be executed by a CPU, whether or not such a computer or processor is explicitly shown. In addition, various other peripheral units may be connected to the computer platform such as an additional data storage unit and a printing unit. Furthermore, a non-transitory computer readable medium is any computer readable medium except for a transitory propagating signal.

All examples and conditional language recited herein are intended for pedagogical purposes to aid the reader in understanding the principles of the invention and the concepts contributed by the inventor to furthering the art, and are to be construed as being without limitation to such specifically recited examples and conditions. Moreover, all statements herein reciting principles, aspects, and embodiments of the invention, as well as specific examples thereof, are intended to encompass both structural and functional equivalents thereof. Additionally, it is intended that such equivalents include both currently known equivalents as well as equivalents developed in the future, i.e., any elements developed that perform the same function, regardless of structure. 

What is claimed is:
 1. A method for cross-cloud identity matching, comprising: receiving at least one user identifier of a user of a client node; determining at least one cloud-based resource accessed by the client node; selecting a cloud-based resource of the at least one accessed cloud-based resource; extracting at least one possible user identity of the user from the selected cloud-based resource; identifying at least one user identifier of the extracted at least one possible user identity; matching between each identified user identifier and the at least one received user identifier; determining whether each possible user identity is associated with the user respective of the matching; and upon determining that at least one possible user identity is associated with the user, storing each associated user identity respective of the client node.
 2. The method of claim 1, wherein the at least one user identifier is received from an agent installed on the client node.
 3. The method of claim 1, wherein each of the at least one received user identifier and the at least one identified user identifier is any one of: a personal parameter, a professional parameter, an email address, and a profile photo.
 4. The method of claim 3, wherein the personal parameter is any one of: a name, an age, a gender, a hobby, and a hometown.
 5. The method of claim 3, wherein the professional parameter is any one of: a profession, a type of work, and a location of the user's work.
 6. The method of claim 1, wherein a possible user identity is determined to be associated with the user upon determining that the matching at least one identified user identifier and the at least one received user identifier exceeds a verification threshold.
 7. The method of claim 6, wherein the verification threshold is any one of: a number of user identifiers that demonstrate matching above a matching threshold, and a degree of matching between user identifiers.
 8. The method of claim 1, wherein determining whether each possible user identity is associated with the user further comprises: providing each associated user identity to a user; and upon receiving a confirmation from the user that the associated user identity is associated with the user, determining that the associated user identity is associated with the user.
 9. The method of claim 1, further comprising at least one of: tokenizing the received at least one user identifier and parsing the received at least one user identifier.
 10. A non-transitory computer readable medium having stored thereon instructions for causing one or more processing units to execute the method according to claim
 1. 11. A system for cross-cloud identity matching, comprising: a processing system; and a memory communicatively connected to the processing system, the memory containing instructions that, when executed by the processing system, configure the system to: receive at least one user identifier of a user of a client node; determine at least one cloud-based resource accessed by the client node; select a cloud-based resource of the at least one accessed cloud-based resource; extract at least one possible user identity of the user from the selected cloud-based resource; identify at least one user identifier of the extracted at least one possible user identity; match between each identified user identifier and the at least one received user identifier; determine whether each possible user identity is associated with the user respective of the matching; and upon determining that at least one possible user identity is associated with the user, store each associated user identity respective of the client node.
 12. The system of claim 11, wherein the at least one user identifier is received from an agent installed on the client node.
 13. The system of claim 11, wherein each of the at least one received user identifier and the at least one identified user identifier is any one of: a personal parameter, a professional parameter, an email address, and a profile photo.
 14. The system of claim 13, wherein the personal parameter is any one of: a name, an age, a gender, a hobby, and a hometown.
 15. The system of claim 13, wherein the professional parameter is any one of: a profession, a type of work, and a location of the user's work.
 16. The system of claim 11, wherein a possible user identity is determined to be associated with the user upon determining that the matching at least one identified user identifier and the at least one received user identifier exceeds a verification threshold.
 17. The system of claim 16, wherein the verification threshold is any one of: a number of user identifiers that demonstrate matching above a matching threshold, and a degree of matching between user identifiers.
 18. The system of claim 11, wherein the system is further configured to: provide each associated user identity to a user; and upon receiving a confirmation from the user that the associated user identity is associated with the user, determine that the associated user identity is associated with the user.
 19. The system of claim 11, wherein the system is further configured to perform at least one of: tokenize the received at least one user identifier, and parse the received at least one user identifier
 20. The system of claim 11, wherein the client node further comprises an agent configured to collect the at least one user identifier of the user of the client node. 